/**
 * 找终点
 * 
 * 题目描述

给定一个正整数数组，设为nums，最大为100个成员，求从第一个成员开始，正好走到数组最后一个成员，所使用的最少步骤数。

要求：

第一步必须从第一元素开始，且1<=第一步的步长<len/2;（len为数组的长度，需要自行解析）。
从第二步开始，只能以所在成员的数字走相应的步数，不能多也不能少, 如果目标不可达返回-1，只输出最少的步骤数量。
只能向数组的尾部走，不能往回走。
输入描述
由正整数组成的数组，以空格分隔，数组长度小于100，请自行解析数据数量。

输出描述
正整数，表示最少的步数，如果不存在输出-1

用例
输入	7 5 9 4 2 6 8 3 5 4 3 9
输出	2
说明	
第一步： 第一个可选步长选择2，从第一个成员7开始走2步，到达9；
第二步： 从9开始，经过自身数字9对应的9个成员到最后。
输入	1 2 3 7 1 5 9 3 2 1
输出	-1
说明	无
 */

import java.util.Arrays;
import java.util.Scanner;

/**
  * 
  题目解析
假设输入的数组为 nums，累计步数step = 0；
从索引 0 位置起跳的第一步步长可以是 [0, len/2)，假设第一步跳到了索引 i 位置，则索引 i 位置的取值范围是 [0, len/2)。此时，step++，累计跳了一步。

从索引 i 位置，可以跳 nums[i] 步长，到达索引 j 位置，即 j = i + nums[i]。此时，step++，累计跳了两步。
如果索引 j 位置不是 nums 最后一个索引位置（len - 1），那么就继续跳，即 j = j + nums[j], step++，直到 j >= len - 1。
如果最终 j == len - 1，那么此时的 step 就是一个可能解，我们比较保留到达终点的最小步数minStep。

  */
public class 找终点 {
    
    public static void main(String[] args) {
    

        try{

            Scanner scanner = new Scanner(System.in);

            int[] peopleArr = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

            //第一步可以走 [1, peopleArr.lenght/2)


            if(peopleArr.length == 1) {

                System.out.println(""+1);

            } else{


                int minStep = Integer.MAX_VALUE;

                for(int i=1; i<peopleArr.length / 2; i++){

                    //走第一步
                    int step = 1;
                    //走后面
                    int nextPosition = i+peopleArr[i]; //后面的按照下标来走
                    step++;

                    //如果 j 小于队列长度 则一走走下去
                    while (nextPosition < peopleArr.length - 1) {

                        nextPosition += peopleArr[nextPosition];
                        step++;
                    }

                    //当走到第最后一步

                    if(nextPosition == peopleArr.length - 1){
                        minStep = Math.min(step, minStep);
                    }
                }

                System.out.println((minStep == Integer.MAX_VALUE) ? "-1" : ""+minStep);

            }

        }catch(Exception e){

            e.printStackTrace();
        }
    }
}
